package hotel.base.oversea.constant;

import hotel.base.oversea.config.PropertyUtil;

/**
 * 美团api相关 常量值
 *
 * @author qiuyy
 * @date 2020-05-15
 */
public interface MeituanConstants {
    String VERSION = "1.0";

    /**第二通道
     * 美团业务Id
     */
    Integer BUSINESS_ID = Integer.valueOf(PropertyUtil.getProperty("common.meituan_business_id_oversea"));
    /**
     * 美团公钥
     */
    String ACCESS_KEY = PropertyUtil.getProperty("common.meituan_access_key_oversea");
    /**
     * 美团密钥
     */
    String SECRET_KEY = PropertyUtil.getProperty("common.meituan_secret_key_oversea");
    /**
     * 美团正式接口地址
     */
    String URL = PropertyUtil.getProperty("common.meituan_url_oversea");

    /**
     * redis key前缀
     */
    String REDIS_MT_HOTEL_QUARTTZ = "meituan_hotel_quartz";

    String REDIS_MT_HOTEL_IDS = REDIS_MT_HOTEL_QUARTTZ + "_ids";
    String REDIS_MT_HOTEL_DETAIL_JOB_IDS_HAS = REDIS_MT_HOTEL_QUARTTZ + "_mt_hotel_detail_job_ids_has";
    String REDIS_MT_HOTEL_DETAIL_JOB_IDS_NOW = REDIS_MT_HOTEL_QUARTTZ + "_mt_hotel_detail_job_ids_now";

    String REDIS_KEY_CHNAGE_PRICE_JOB_PROCESS_ING = REDIS_MT_HOTEL_QUARTTZ + "_redis_key_change_price_job_process_ing";
    String REDIS_KEY_DEALING_NOTIFY_ROOM_STATE_JOB_PROCESS_ING = REDIS_MT_HOTEL_QUARTTZ + "_redis_key_dealing_notify_room_state_job_process_ing";
    String REDIS_KEY_DEALING_NOTIFY_ROOM_INFO_JOB_PROCESS_ING = REDIS_MT_HOTEL_QUARTTZ + "_redis_key_dealing_notify_room_info_job_process_ing";

    String REDIS_MT_HOTEL_ROOM_JOB_IDS_HAS = REDIS_MT_HOTEL_QUARTTZ + "_mt_hotel_room_job_ids_has";
    String REDIS_MT_HOTEL_ROOM_JOB_IDS_NOW = REDIS_MT_HOTEL_QUARTTZ + "_mt_hotel_room_job_ids_now";

    String REDIS_MT_HOTEL_IDS_PAGE_INDEX = REDIS_MT_HOTEL_QUARTTZ + "_ids_page_index";
    String REDIS_MT_HOTEL_IDS_MAXID = REDIS_MT_HOTEL_QUARTTZ + "_ids_maxid";

    int REDIS_MT_HOTEL_DATA_WAIT_COUNT = 5;
    String REDIS_MT_HOTEL_DATA_WAIT_SAVE = REDIS_MT_HOTEL_QUARTTZ + "_data_wait_save";

    int REDIS_MT_HOTEL_ROOM_INFO_WAIT_COUNT = 5;
    String REDIS_MT_HOTEL_ROOM_INFO_WAIT_SAVE = REDIS_MT_HOTEL_QUARTTZ + "_room_infos_wait_save";

    int REDIS_MT_HOTEL_IDS_WAIT_COUNT = 5;
    String REDIS_MT_HOTEL_IDS_WAIT_SAVE = REDIS_MT_HOTEL_QUARTTZ + "_ids_wait_save";

    /**
     * 下单定时器  所有待下单的订单缓存key
     */
    String REDIS_KEY_BOOKING_JOB_ALL_WAIT_ORDER = REDIS_MT_HOTEL_QUARTTZ + "_SwitchHotelOrderFromMeituanJob_REDIS_KEY_ALL_WAIT_ORDER";

    String REDIS_NOTIFY_GOODS_CHANGE_MANY_HOTEL = "this_mt_notify_goods_change_about_many_hotel";
    String REDIS_NOTIFY_GOODS_STATE_CHANGE_MANY_HOTEL = "this_mt_notify_goods_state_change_about_many_hotel";

    /**
     * redisTemplate.opsForList().leftPush(MeituanConstants.REDIS_CHANGE_GOODS_DATA_MANY_HOTEL,JSON.toJSONString(batchPushRoomDatasVo));//将数据对象追加进redis队列
     */
    String REDIS_CHANGE_GOODS_DATA_MANY_HOTEL = "redis_change_goods_data_many_hotel";//美团渠道异步推送有变化的美团产品数据

    String REDIS_CHANGE_GOODS_DATA_MANY_HOTEL_FOR_FP = "fp_redis_change_goods_data_many_hotel";//美团渠道异步推送给飞猪有变化的美团产品数据

    String REDIS_CHANGE_GOODS_DATA_MANY_HOTEL_HHB_CHANNEL = "redis_change_goods_data_many_hotel_hhb_channel";//很好办系统推送的异步通知房态价格数据

    //----------------------basic

    String REDIS_KEY_CHECK_BASIC_JOB_THREAD_STOP = "BasicMtGoodsInfoCheckUpdateJob_thread_stop";

    //push 2小时一次
    String REDIS_QUEUE_HOTEL_BREAKFAST_JSON_KEY = "redis_queue_hotel_breakfast_json";//美团产品早餐变化队列
    String REDIS_QUEUE_HOTEL_DOWN_GOODS_JSON_KEY = "redis_queue_hotel_down_goods_json";//美团产品失效队列
    String REDIS_BASCI_GOODS_HOTEL_CHECK_HOUR = "BasicMtGoodsInfoCheckUpdateJob_hour";
    String REDIS_BASIC_SOME_HOTELS_TEST="test_up_hotel_id";
    String REDIS_MT_GOODS_PRICE_TEST_REMOVE="mt_goods_price_test_remove";
    //push 2小时一次
    //------------------------------  以上job每天半小时一次处理失效产品

    //push 每天一次
    String REDIS_QUEUE_HOTEL_ADD_GOODS_JSON_KEY = "redis_queue_hotel_add_goods_json";//美团产品新增队列  和本地库表比较是否新增- pop进行保存更新到本地库表-以酒店为单位保存
    //push 每天一次

    //失效和新增的房型每天一次push（酒店pop保存时判断进行的push）但是是属于半小时一次pop的job来处理的


    //--美团一次的pop，pop处理 涉及

    //push 每天一次
    String REDIS_QUEUE_SAVE_BASIC_HOTEL_GOODS_INFO = "basic_save_hotel_goods_info_json";//美团更新保存产品静态信息队列 - pop进行保存更新到本地库表-以酒店为单位保存

    //push 每天一次
    String REDIS_QUEUE_BASIC_REAL_ROOM_UPDATE_TO_SWITCHS = "queue_query_basic_real_room_update_to_switchs";//美团失效和新增的房型json数据队列待消费- pop进行保存更新到本地库表-以酒店为单位保存
    //push 每天一次
    String REDIS_QUEUE_SAVE_BASIC_HOTEL_DETAILS_INFO = "basic_hotel_save_queue_twenty";//美团更新保存酒店静态信息队列 - pop进行保存更新到本地库表-以酒店为单位保存

    //--美团一次的pop，pop处理 涉及

    //----------------------basic

    /**
     * 主动查询定时器每一轮查询都会赋值缓存队列 REIDS_POP_ALL_SALE_ROOM_ABOUT_MT_HOTEL_IDS
     */
    String REIDS_POP_ALL_SALE_ROOM_ABOUT_MT_HOTEL_IDS = "pop_all_sale_room_about_mt_hotel_ids";//24小时主动查询价格房态数据来源队列
    String REIDS_POP_ALL_SALE_ROOM_ONE = "pop_all_sale_room_one";
    String REIDS_POP_ALL_SALE_ROOM_TW = "pop_all_sale_room_tw";
    String REIDS_POP_ALL_SALE_ROOM_ABOUT_MT_HOTEL_IDS_FOR_RLPRICE = "pop_all_sale_room_about_mt_hotel_ids_for_rlprice";//节点时间主动查询日历价格数据来源队列
    String REIDS_POP_ALL_SALE_ROOM_ABOUT_MT_HOTEL_IDS_FOR_RLSTATUS = "pop_all_sale_room_about_mt_hotel_ids_for_rlstatus";//节点时间主动查询日历房态数据来源队列
    String REIDS_QUEUE_VIP_PRICE_QUERY = "redis_queue_vip_price_query";//独立价格-优势酒店-待查询酒店id队列
    String REIDS_QUEUE_NORMAL_PRICE_QUERY = "redis_queue_normal_price_query";//独立价格-普通酒店-待查询酒店id队列
    String REDIS_BASIC_GOODS_INFO_QUEUE_HOTELS = "redis_basic_goods_info_queue_hotels";//用于跑静态信息 当前上架酒店push到队列
    String REIDS_MT_GOODS_PRICE_DAY_REMOVE = "redis_mt_goods_price_day_remove";//用于定时删除酒店产品价格日期 缓存，实现全量每天跑一次   队列内容 mtHotelId+"_"+goodsId
    String REDIS_BASIC_HOTELS_INFO_QUEUE_HOTELS = "redis_basic_hotels_info_queue_hotels";//静态酒店信息酒店队列
    String REDIS_PART_TIME_CHECK_FAILURE_GOODS_HOTELS = "redis_part_time_check_failure_goods_hotels";//上架的酒店和产品，定点时间定时器校验

    String REIDS_POP_ALL_SALE_ROOM_ABOUT_MT_HOTEL_INV= "pop_all_sale_room_about_mt_hotel_inv";//节点时间主动查询库存数据来源队列
    /**
     * 创建售卖房型时追加到缓存map中  所有上架了的酒店
     */
    String REIDS_MAP_ALL_SALE_ROOM_ABOUT_MT_HOTEL_IDS = "all_sale_room_about_mt_hotel_ids";
    /**
     * 缓存key名称，部分上线的酒店（携程售卖）---》》主动查询定时器查询的是这些缓存的酒店数据   缓存美团酒店idmap key=mtHotelId value=mtHotelId
     */
    String REIDS_MAP_ING_SALE_ROOM_ABOUT_MT_HOTEL_IDS = "REIDS_MAP_ING_SALE_ROOM_ABOUT_MT_HOTEL_IDS";

    //创建售卖房型定时器调用美团创建售卖房型创建成功后  缓存成功的酒店到一级缓存
    String REIDS_MAP_ALL_SALE_HOTEL_IDS = "all_sale_hotel_ids";

    /**
     * 保存房型的基本信息
     * key 美团房型id  value 对应的物理房型信息
     */
    String REDIS_MT_HOTEL_BIZ_REAL_ROOM_BASE_INFO = "redis_mt_hotel_biz_real_room_base_info";
    //api预约下单时缓存已提交待酒店确认订单（定时器每分钟催单）  key= mtOrderId 上游返回订单id  value=mtOrderId // 美团notify+定时器主动查询订单变更时移除缓存
    String REDIS_MT_HOTEL_ORDER_WAIT_CONFIRM_WAIT_REMIND = REDIS_MT_HOTEL_QUARTTZ + "_order_wait_confirm_wait_remind";

    String REDIS_KEY_HEAD_MT_ORDER_JOB_ING_VALUE_ORDER_ID = REDIS_MT_HOTEL_QUARTTZ + "_REDIS_KEY_HEAD_MT_ORDER_JOB_ING_VALUE_ORDER_ID";

    /**
     * 定时器任务
     */
    String JOB_GROUP_NAME_MT = "Meituan";

    /**
     * 不需要发票
     */
    Integer NEED_INVOICE_NO = 0;
    /**
     * 需要发票
     */
    Integer NEED_INVOICE_YES = 1;

    //24小时主动查询rp接口   一次10个酒店，不可跨度返回数据，按天数一个个查
    Integer ALL_TIME_TASK_COUNT =10;//实际5x2=10个线程每秒//外部循环ALL_TIME_TASK_COUNT=5个线程，程序内部发起线程2个（因为天数），ALL_TIME_TASK_COUNT=5个x10为50个酒店
    Integer ALL_TIME_TASK_COUNT_SPLIT =5;
    //Integer ALL_TIME_DAYS =3;//查询未来10天
    Integer ALL_TIME_TASK_COUNT_ONE =10;

    //主动价格日历接口查询  未来30天 一次接口10个酒店，且跨度天数返回数据
    Integer PART_PRICE_TIME_TASK_COUNT =14;//内部价格触发5个线程（外部定时器中需要设置sleep触发内部方法间隔时间），一个线程10个酒店，则50个酒店
    Integer PART_PRICE_TIME_HOTEL_COUNT =10;//接口每次上送10个酒店，则1个线程10个酒店，PART_PRICE_TIME_TASK_COUNT=5，则50个酒店/1秒
    Integer PRICE_QUERY_VIP_TASK_COUNT =7;//独立价格定时器，优势酒店查询价格
    Integer PRICE_QUERY_NORMAL_TASK_COUNT =7;//独立价格定时器，优势酒店查询价格

    //主动房态日历接口查询  未来30天  一次接口只1个酒店，跨度天数返回数据
    Integer PART_STATUS_TIME_TASK_COUNT =35;//独立接口 第二版 35
    Integer PART_STATUS_TIME_HOTEL_COUNT =1;//接口每次上送1个酒店，则1个线程1个酒店，PART_STATUS_TIME_HOTEL_COUNT=20，则20个酒店/1秒


    String MEITUAN_FIND_ACTIVE_GOODS_DAY="meituan_find_active_goods_day";//查询美团活动酒店产品天数

    String REDIS_ONE_GOODS_PRICE_LIBRARY_NEW = "swmt_redis_one_goods_price_library_new";//统计出最新的三天内产品的标准价放入队列，等待定时器pop
    String REIDS_MT_GOODS_STATUS_DAY_REMOVE = "swmt_redis_one_goods_status_library_new";
    String REIDS_POP_ALL_SALE_ROOM_ABOUT_MT_HOTEL_IDS_FOR_RLSTATUS_VSEC = "pop_all_sale_room_about_mt_hotel_ids_for_rlstatus_vsec";
    String REIDS_MT_API_STATUS_DATA_QUEUE = "redis_mt_api_status_data_queue";//定时器请求接口马上保存到队列
}
